{
  "nbformat": 4,
  "nbformat_minor": 0,
  "metadata": {
    "colab": {
      "provenance": [],
      "authorship_tag": "ABX9TyM8iHZtXGtdjj07mAkhhGr3",
      "include_colab_link": true
    },
    "kernelspec": {
      "name": "python3",
      "display_name": "Python 3"
    },
    "language_info": {
      "name": "python"
    }
  },
  "cells": [
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "view-in-github",
        "colab_type": "text"
      },
      "source": [
        "<a href=\"https://colab.research.google.com/github/LC1332/Chat-Haruhi-Suzumiya/blob/main/notebook/%E6%95%B0%E6%8D%AE%E9%9B%86%E7%BB%9F%E8%AE%A1%E7%BB%98%E5%88%B6.ipynb\" target=\"_parent\"><img src=\"https://colab.research.google.com/assets/colab-badge.svg\" alt=\"Open In Colab\"/></a>"
      ]
    },
    {
      "cell_type": "markdown",
      "source": [
        "# story生成的统计"
      ],
      "metadata": {
        "id": "AngZUWwUU1M8"
      }
    },
    {
      "cell_type": "code",
      "execution_count": null,
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "H2mN5592U0QR",
        "outputId": "0489d645-39cb-47ac-fa3a-d8da85916512"
      },
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "Mounted at /content/drive\n"
          ]
        }
      ],
      "source": [
        "from google.colab import drive\n",
        "drive.mount('/content/drive')"
      ]
    },
    {
      "cell_type": "code",
      "source": [
        "!ls /content/drive/MyDrive/GPTData/kyon"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "FCgiwuTlU5Zl",
        "outputId": "0d140d8f-2b90-467a-fdae-6e42fb237135"
      },
      "execution_count": null,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "ayaka_test\t\t\t\tPenny_test\n",
            "ayaka_test_output_dialogue.jsonl\tPenny_test_output_dialogue.jsonl\n",
            "baizhantang_test\t\t\tqiaofeng_test\n",
            "baizhantang_test_output_dialogue.jsonl\tqiaofeng_test_output_dialogue.jsonl\n",
            "duanyu_test\t\t\t\traidenShogun_test\n",
            "duanyu_test_output_dialogue.jsonl\traidenShogun_test_output_dialogue.jsonl\n",
            "Dumbledore_test\t\t\t\tRaj_test\n",
            "Dumbledore_test_output_dialogue.jsonl\tRaj_test_output_dialogue.jsonl\n",
            "guofurong_test\t\t\t\tRon_test\n",
            "guofurong_test_output_dialogue.jsonl\tRon_test_output_dialogue.jsonl\n",
            "Harry_test\t\t\t\tSheldon_test\n",
            "Harry_test_output_dialogue.jsonl\tSheldon_test_output_dialogue.jsonl\n",
            "haruhi_800\t\t\t\tSnape_test\n",
            "haruhi_800_synthesis_dialogue.jsonl\tSnape_test_output_dialogue.jsonl\n",
            "haruhi_full\t\t\t\tstory_synthesis_data_previous.zip\n",
            "haruhi_synthesis_dialogue.jsonl\t\tstory_synthesis_data.zip\n",
            "haruhi_test\t\t\t\ttangshiye_test\n",
            "haruhi_test_output_dialogue.jsonl\ttangshiye_test_output_dialogue.jsonl\n",
            "Hermione_test\t\t\t\ttemp_chat\n",
            "Hermione_test_output_dialogue.jsonl\ttongxiangyu_test\n",
            "hutao_test\t\t\t\ttongxiangyu_test_output_dialogue.jsonl\n",
            "hutao_test_output_dialogue.jsonl\twanderer_test\n",
            "jiumozhi_test\t\t\t\twanderer_test_output_dialogue.jsonl\n",
            "jiumozhi_test_output_dialogue.jsonl\twangduoyu_test\n",
            "liyunlong\t\t\t\twangduoyu_test_output_dialogue.jsonl\n",
            "liyunlong_800\t\t\t\twangyuyan_test\n",
            "liyunlong_800_synthesis_dialogue.jsonl\twangyuyan_test_output_dialogue.jsonl\n",
            "liyunlong_synthesis_dialogue.jsonl\tweixiaobao_test\n",
            "Luna_test\t\t\t\tweixiaobao_test_output_dialogue.jsonl\n",
            "Luna_test_output_dialogue.jsonl\t\txiaofeng_test\n",
            "Malfoy_test\t\t\t\txiaofeng_test_output_dialogue.jsonl\n",
            "Malfoy_test_output_dialogue.jsonl\txuzhu_test\n",
            "McGonagall_test\t\t\t\txuzhu_test_output_dialogue.jsonl\n",
            "McGonagall_test_no_good\t\t\tyuqian_test\n",
            "McGonagall_test_output_dialogue.jsonl\tyuqian_test_output_dialogue.jsonl\n",
            "murongfu_test\t\t\t\tzhongli_test\n",
            "murongfu_test_output_dialogue.jsonl\tzhongli_test_output_dialogue.jsonl\n"
          ]
        }
      ]
    },
    {
      "cell_type": "markdown",
      "source": [
        "对于 /content/drive/MyDrive/GPTData/kyon 中的所有jsonl文件\n",
        "\n",
        "用utf8编码打开每个文件，检查每个jsonl文件包含多少行数据\n",
        "\n",
        "输出每个文件名和对应的行数，\n",
        "\n",
        "并求出总行数，用python为我实现"
      ],
      "metadata": {
        "id": "fzUzHwUYVBe1"
      }
    },
    {
      "cell_type": "code",
      "source": [
        "import os\n",
        "import json\n",
        "\n",
        "remove_file = ['haruhi_test_output_dialogue.jsonl', 'haruhi_800_synthesis_dialogue.jsonl', 'liyunlong_800_synthesis_dialogue.jsonl']\n",
        "\n",
        "data_dir = '/content/drive/MyDrive/GPTData/kyon'\n",
        "\n",
        "total_lines = 0\n",
        "count = 0\n",
        "for filename in os.listdir(data_dir):\n",
        "    if filename in remove_file:\n",
        "        continue\n",
        "    if filename.endswith('.jsonl'):\n",
        "        count += 1\n",
        "        filepath = os.path.join(data_dir, filename)\n",
        "        line_count = 0\n",
        "        with open(filepath, 'r', encoding='utf-8') as f:\n",
        "            for line in f:\n",
        "                line_count += 1\n",
        "        print(f'{filename}: {line_count} lines')\n",
        "        total_lines += line_count\n",
        "\n",
        "print(f'Total lines in all files: {total_lines}')\n",
        "\n",
        "print(count,' files found')"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "2dDXxFOfVA5q",
        "outputId": "d7560112-c54e-45a8-bfc6-047ae01568fe"
      },
      "execution_count": null,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "haruhi_synthesis_dialogue.jsonl: 454 lines\n",
            "liyunlong_synthesis_dialogue.jsonl: 917 lines\n",
            "wangduoyu_test_output_dialogue.jsonl: 115 lines\n",
            "tangshiye_test_output_dialogue.jsonl: 75 lines\n",
            "weixiaobao_test_output_dialogue.jsonl: 2300 lines\n",
            "baizhantang_test_output_dialogue.jsonl: 716 lines\n",
            "tongxiangyu_test_output_dialogue.jsonl: 839 lines\n",
            "guofurong_test_output_dialogue.jsonl: 584 lines\n",
            "jiumozhi_test_output_dialogue.jsonl: 85 lines\n",
            "duanyu_test_output_dialogue.jsonl: 484 lines\n",
            "murongfu_test_output_dialogue.jsonl: 155 lines\n",
            "qiaofeng_test_output_dialogue.jsonl: 182 lines\n",
            "wangyuyan_test_output_dialogue.jsonl: 188 lines\n",
            "xiaofeng_test_output_dialogue.jsonl: 244 lines\n",
            "xuzhu_test_output_dialogue.jsonl: 197 lines\n",
            "Luna_test_output_dialogue.jsonl: 67 lines\n",
            "Malfoy_test_output_dialogue.jsonl: 157 lines\n",
            "Dumbledore_test_output_dialogue.jsonl: 419 lines\n",
            "Ron_test_output_dialogue.jsonl: 1343 lines\n",
            "Hermione_test_output_dialogue.jsonl: 1374 lines\n",
            "Snape_test_output_dialogue.jsonl: 197 lines\n",
            "Harry_test_output_dialogue.jsonl: 2771 lines\n",
            "McGonagall_test_output_dialogue.jsonl: 168 lines\n",
            "ayaka_test_output_dialogue.jsonl: 198 lines\n",
            "wanderer_test_output_dialogue.jsonl: 83 lines\n",
            "zhongli_test_output_dialogue.jsonl: 73 lines\n",
            "raidenShogun_test_output_dialogue.jsonl: 75 lines\n",
            "hutao_test_output_dialogue.jsonl: 76 lines\n",
            "yuqian_test_output_dialogue.jsonl: 5673 lines\n",
            "Sheldon_test_output_dialogue.jsonl: 1318 lines\n",
            "Penny_test_output_dialogue.jsonl: 879 lines\n",
            "Raj_test_output_dialogue.jsonl: 346 lines\n",
            "Total lines in all files: 22752\n",
            "32  files found\n"
          ]
        }
      ]
    },
    {
      "cell_type": "markdown",
      "source": [
        "给定代码\n",
        "\n",
        "```python\n",
        "import os\n",
        "import json\n",
        "\n",
        "remove_file = ['haruhi_test_output_dialogue.jsonl', 'haruhi_800_synthesis_dialogue.jsonl', 'liyunlong_800_synthesis_dialogue.jsonl']\n",
        "\n",
        "data_dir = '/content/drive/MyDrive/GPTData/kyon'\n",
        "\n",
        "total_lines = 0\n",
        "count = 0\n",
        "for filename in os.listdir(data_dir):\n",
        "    if filename in remove_file:\n",
        "        continue\n",
        "    if filename.endswith('.jsonl'):\n",
        "        count += 1\n",
        "        filepath = os.path.join(data_dir, filename)\n",
        "        line_count = 0\n",
        "        with open(filepath, 'r', encoding='utf-8') as f:\n",
        "            for line in f:\n",
        "                line_count += 1\n",
        "        print(f'{filename}: {line_count} lines')\n",
        "        total_lines += line_count\n",
        "\n",
        "print(f'Total lines in all files: {total_lines}')\n",
        "\n",
        "print(count,' files found')\n",
        "```\n",
        "\n",
        "其中filename是形如\n",
        "\n",
        "haruhi_synthesis_dialogue.jsonl: 454 lines\n",
        "\n",
        "liyunlong_synthesis_dialogue.jsonl: 917 lines\n",
        "\n",
        "形式的字符串\n",
        "\n",
        "我希望建立一个字典role2freq\n",
        "\n",
        "其中key选取文件名第一个下划线'_'之前的字段，value的值等于行数\n",
        "\n",
        "请用python为我实现"
      ],
      "metadata": {
        "id": "wtt1rSmrwQ8x"
      }
    },
    {
      "cell_type": "markdown",
      "source": [
        "# 模拟数据统计"
      ],
      "metadata": {
        "id": "oP4B3wJCpBBn"
      }
    },
    {
      "cell_type": "code",
      "source": [
        "import os\n",
        "import json\n",
        "\n",
        "real_count = 22752\n",
        "\n",
        "\n",
        "remove_file = []\n",
        "\n",
        "data_dir = '/content/drive/MyDrive/GPTData/kyon_alpaca'\n",
        "\n",
        "total_lines = 0\n",
        "count = 0\n",
        "for filename in os.listdir(data_dir):\n",
        "    if filename in remove_file:\n",
        "        continue\n",
        "    if filename.endswith('.jsonl'):\n",
        "        count += 1\n",
        "        filepath = os.path.join(data_dir, filename)\n",
        "        line_count = 0\n",
        "        with open(filepath, 'r', encoding='utf-8') as f:\n",
        "            for line in f:\n",
        "                line_count += 1\n",
        "        print(f'{filename}: {line_count} lines')\n",
        "        total_lines += line_count\n",
        "\n",
        "print(f'Total lines in all files: {total_lines}')\n",
        "\n",
        "print(count,' files found')\n",
        "\n",
        "print('dataset totle =', real_count + total_lines)\n",
        "print('real =', real_count, ' synthesis =', total_lines )"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "_ZxSk-CgQUQd",
        "outputId": "edeb64cc-396e-4793-d313-1a8f260ccc01"
      },
      "execution_count": null,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "haruhi_800_synthesis_dialogue.jsonl: 709 lines\n",
            "qiaofeng_test_output_dialogue.jsonl: 427 lines\n",
            "weixiaobao_test_output_dialogue.jsonl: 213 lines\n",
            "tangshiye_test_output_dialogue.jsonl: 128 lines\n",
            "murongfu_test_output_dialogue.jsonl: 196 lines\n",
            "liyunlong_test_output_dialogue.jsonl: 214 lines\n",
            "jiumozhi_test_output_dialogue.jsonl: 204 lines\n",
            "wangduoyu_test_output_dialogue.jsonl: 246 lines\n",
            "Luna_test_output_dialogue.jsonl: 190 lines\n",
            "Ron_test_output_dialogue.jsonl: 242 lines\n",
            "wangyuyan_test_output_dialogue.jsonl: 151 lines\n",
            "Sheldon_Chinese_dialogue.jsonl: 614 lines\n",
            "Raj_Chinese_dialogue.jsonl: 116 lines\n",
            "Penny_Chinese_dialogue.jsonl: 339 lines\n",
            "liyunlong_800_synthesis_dialogue.jsonl: 700 lines\n",
            "Luna_Chinese_dialogue.jsonl: 90 lines\n",
            "Harry_Chinese_dialogue.jsonl: 2409 lines\n",
            "Ron_Chinese_dialogue.jsonl: 2103 lines\n",
            "Dumbledore_Chinese_dialogue.jsonl: 908 lines\n",
            "Snape_Chinese_dialogue.jsonl: 414 lines\n",
            "McGonagall_Chinese_dialogue.jsonl: 291 lines\n",
            "Malfoy_Chinese_dialogue.jsonl: 235 lines\n",
            "mws811_baizhantang_test_output_dialogue.jsonl: 166 lines\n",
            "mws811_guofurong_test_output_dialogue.jsonl: 334 lines\n",
            "mws811_zhongli_test_output_dialogue.jsonl: 135 lines\n",
            "mws811_ayaka_test_output_dialogue.jsonl: 534 lines\n",
            "mws811_raidenShogun_test_output_dialogue.jsonl: 319 lines\n",
            "Hermione_Chinese_dialogue.jsonl: 2206 lines\n",
            "mws812_xuzhu_test_output_dialogue.jsonl: 343 lines\n",
            "mws812_xiaofeng_test_output_dialogue.jsonl: 258 lines\n",
            "mws812_duanyu_test_output_dialogue.jsonl: 487 lines\n",
            "mws812_tongxiangyu_test_output_dialogue.jsonl: 377 lines\n",
            "mws812_wanderer_test_output_dialogue.jsonl: 261 lines\n",
            "mws812_hutao_test_output_dialogue.jsonl: 505 lines\n",
            "mws813_jiumozhi_test_output_dialogue.jsonl: 476 lines\n",
            "mws813_Snape_test_output_dialogue.jsonl: 490 lines\n",
            "mws813_Malfoy_test_output_dialogue.jsonl: 412 lines\n",
            "mws813_zhongli_test_output_dialogue.jsonl: 341 lines\n",
            "mws813_Raj_test_output_dialogue.jsonl: 602 lines\n",
            "claude_tangshiye_test_output_dialogue.jsonl: 1203 lines\n",
            "claude_wangduoyu_test_output_dialogue.jsonl: 977 lines\n",
            "claude_jiumozhi_test_output_dialogue.jsonl: 1288 lines\n",
            "claude_wangyuyan_test_output_dialogue.jsonl: 1249 lines\n",
            "claude_qiaofeng_test_output_dialogue.jsonl: 2612 lines\n",
            "mws814_xuzhu_test_output_dialogue.jsonl: 533 lines\n",
            "mws814_xiaofeng_test_output_dialogue.jsonl: 523 lines\n",
            "claude_murongfu_test_output_dialogue.jsonl: 1456 lines\n",
            "mws814_McGonagall_test_output_dialogue.jsonl: 1181 lines\n",
            "mws814_wanderer_test_output_dialogue.jsonl: 376 lines\n",
            "mws814_hutao_test_output_dialogue.jsonl: 291 lines\n",
            "mws814_ayaka_test_output_dialogue.jsonl: 555 lines\n",
            "mws814_raidenShogun_test_output_dialogue.jsonl: 194 lines\n",
            "claudemore_ayaka_test_output_dialogue.jsonl: 151 lines\n",
            "Total lines in all files: 31974\n",
            "53  files found\n",
            "dataset totle = 54726\n",
            "real = 22752  synthesis = 31974\n"
          ]
        }
      ]
    },
    {
      "cell_type": "markdown",
      "source": [
        "data_dir = '/content/drive/MyDrive/GPTData/kyon'\n",
        "\n",
        "把这个目录下的所有jsonl文件打包为一个zip存储在/content中\n",
        "\n",
        "请用python为我实现"
      ],
      "metadata": {
        "id": "xk4etrfmf1uQ"
      }
    },
    {
      "cell_type": "code",
      "source": [
        "import os\n",
        "import zipfile\n",
        "\n",
        "data_dir = '/content/drive/MyDrive/GPTData/kyon'\n",
        "output_path = '/content/story_synthesis_data.zip'\n",
        "\n",
        "zf = zipfile.ZipFile(output_path, 'w')\n",
        "\n",
        "for filename in os.listdir(data_dir):\n",
        "    if filename in remove_file:\n",
        "        continue\n",
        "    if filename.endswith('.jsonl'):\n",
        "        file_path = os.path.join(data_dir, filename)\n",
        "        zf.write(file_path, arcname=filename)\n",
        "\n",
        "zf.close()"
      ],
      "metadata": {
        "id": "P7J5yeFAVU1O"
      },
      "execution_count": null,
      "outputs": []
    },
    {
      "cell_type": "code",
      "source": [
        "import os\n",
        "import zipfile\n",
        "\n",
        "data_dir = '/content/drive/MyDrive/GPTData/kyon_alpaca'\n",
        "output_path = '/content/alpaca_synthesis_data.zip'\n",
        "\n",
        "zf = zipfile.ZipFile(output_path, 'w')\n",
        "\n",
        "for filename in os.listdir(data_dir):\n",
        "    if filename.endswith('.jsonl'):\n",
        "        file_path = os.path.join(data_dir, filename)\n",
        "        zf.write(file_path, arcname=filename)\n",
        "\n",
        "zf.close()"
      ],
      "metadata": {
        "id": "dWVobwongC8N"
      },
      "execution_count": null,
      "outputs": []
    },
    {
      "cell_type": "markdown",
      "source": [
        "# 生成role2freq"
      ],
      "metadata": {
        "id": "TE0HYRJxpZ4t"
      }
    },
    {
      "cell_type": "code",
      "source": [
        "import os\n",
        "import json\n",
        "\n",
        "remove_file = ['haruhi_test_output_dialogue.jsonl', 'haruhi_800_synthesis_dialogue.jsonl', 'liyunlong_800_synthesis_dialogue.jsonl']\n",
        "\n",
        "data_dir = '/content/drive/MyDrive/GPTData/kyon'\n",
        "\n",
        "role2freq = {}\n",
        "\n",
        "for filename in os.listdir(data_dir):\n",
        "    if filename in remove_file:\n",
        "        continue\n",
        "    if filename.endswith('.jsonl'):\n",
        "        role = filename.split('_')[0]\n",
        "        filepath = os.path.join(data_dir, filename)\n",
        "        line_count = 0\n",
        "        with open(filepath, 'r', encoding='utf-8') as f:\n",
        "            for line in f:\n",
        "                line_count += 1\n",
        "        if role not in role2freq:\n",
        "            role2freq[role] = line_count\n",
        "        else:\n",
        "            role2freq[role] += line_count\n",
        "\n",
        "print(role2freq)"
      ],
      "metadata": {
        "id": "B0TqrXF0lT_g",
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "outputId": "508875c6-4049-47e5-a7ce-0a89a39b7485"
      },
      "execution_count": null,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "{'haruhi': 454, 'liyunlong': 917, 'wangduoyu': 115, 'tangshiye': 75, 'weixiaobao': 2300, 'baizhantang': 716, 'tongxiangyu': 839, 'guofurong': 584, 'jiumozhi': 85, 'duanyu': 484, 'murongfu': 155, 'qiaofeng': 182, 'wangyuyan': 188, 'xiaofeng': 244, 'xuzhu': 197, 'Luna': 67, 'Malfoy': 157, 'Dumbledore': 419, 'Ron': 1343, 'Hermione': 1374, 'Snape': 197, 'Harry': 2771, 'McGonagall': 168, 'ayaka': 198, 'wanderer': 83, 'zhongli': 73, 'raidenShogun': 75, 'hutao': 76, 'yuqian': 5673, 'Sheldon': 1318, 'Penny': 879, 'Raj': 346}\n"
          ]
        }
      ]
    },
    {
      "cell_type": "code",
      "source": [
        "data_dir = '/content/drive/MyDrive/GPTData/kyon_alpaca'\n",
        "\n",
        "role2syn = {}\n",
        "\n",
        "for role in role2freq:\n",
        "    role2syn[role] = 0\n",
        "\n",
        "\n",
        "total_lines = 0\n",
        "count = 0\n",
        "for filename in os.listdir(data_dir):\n",
        "    if filename.endswith('.jsonl'):\n",
        "        count += 1\n",
        "        filepath = os.path.join(data_dir, filename)\n",
        "        line_count = 0\n",
        "        with open(filepath, 'r', encoding='utf-8') as f:\n",
        "            for line in f:\n",
        "                line_count += 1\n",
        "\n",
        "        role = filename.split('_')[0]\n",
        "\n",
        "        role_alt = filename.split('_')[1]\n",
        "        if role in role2syn:\n",
        "            role2syn[role] += line_count\n",
        "        elif role_alt in role2syn:\n",
        "            role2syn[role_alt] += line_count\n",
        "        else:\n",
        "            role2syn[role] = line_count\n",
        "\n",
        "print(role2syn)\n",
        "\n",
        "#         print(f'{filename}: {line_count} lines')\n",
        "#         total_lines += line_count\n",
        "\n",
        "# print(f'Total lines in all files: {total_lines}')\n",
        "\n",
        "# print(count,' files found')"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "WuHELWZFwps9",
        "outputId": "c434245f-1b13-4b11-b150-331c3b2ef9ec"
      },
      "execution_count": null,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "{'haruhi': 709, 'liyunlong': 914, 'wangduoyu': 1223, 'tangshiye': 1331, 'weixiaobao': 213, 'baizhantang': 166, 'tongxiangyu': 377, 'guofurong': 334, 'jiumozhi': 1968, 'duanyu': 487, 'murongfu': 1652, 'qiaofeng': 3039, 'wangyuyan': 1400, 'xiaofeng': 781, 'xuzhu': 876, 'Luna': 280, 'Malfoy': 647, 'Dumbledore': 908, 'Ron': 2345, 'Hermione': 2206, 'Snape': 904, 'Harry': 2409, 'McGonagall': 1472, 'ayaka': 1240, 'wanderer': 637, 'zhongli': 476, 'raidenShogun': 513, 'hutao': 796, 'yuqian': 0, 'Sheldon': 614, 'Penny': 339, 'Raj': 718}\n"
          ]
        }
      ]
    },
    {
      "cell_type": "code",
      "source": [
        "target_lines = 52000\n",
        "\n",
        "n_role = len(role2freq)\n",
        "\n",
        "for target_line in range(800, target_lines):\n",
        "    count = 0\n",
        "    for role in role2freq:\n",
        "        count += max(target_line, role2freq[role] + role2syn[role])\n",
        "    if count >= target_lines:\n",
        "        print('target_line = ', target_line)\n",
        "        break\n"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "d_CgSawdw4A8",
        "outputId": "77e1f840-67fe-404f-8be0-e725aa9fa68e"
      },
      "execution_count": null,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "target_line =  800\n"
          ]
        }
      ]
    },
    {
      "cell_type": "code",
      "source": [
        "target_line = 1079\n",
        "\n",
        "increase_count = 0\n",
        "\n",
        "for role in role2freq:\n",
        "    if role2freq[role] + role2syn[role] < target_line:\n",
        "        print( role, ' need to augment , required lines = ', target_line -role2freq[role] - role2syn[role])\n",
        "        increase_count += (target_line -role2freq[role] - role2syn[role])\n",
        "\n",
        "print('\\n still required total ', increase_count)\n",
        "\n"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "zW0ye7HlxU19",
        "outputId": "308facf2-70d4-43bf-d3c3-0cb32683611b"
      },
      "execution_count": null,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "baizhantang  need to augment , required lines =  197\n",
            "guofurong  need to augment , required lines =  161\n",
            "duanyu  need to augment , required lines =  108\n",
            "murongfu  need to augment , required lines =  728\n",
            "xiaofeng  need to augment , required lines =  54\n",
            "xuzhu  need to augment , required lines =  6\n",
            "Luna  need to augment , required lines =  732\n",
            "Malfoy  need to augment , required lines =  275\n",
            "McGonagall  need to augment , required lines =  620\n",
            "ayaka  need to augment , required lines =  347\n",
            "wanderer  need to augment , required lines =  735\n",
            "zhongli  need to augment , required lines =  530\n",
            "raidenShogun  need to augment , required lines =  685\n",
            "hutao  need to augment , required lines =  498\n",
            "Raj  need to augment , required lines =  15\n",
            "\n",
            " still required total  5691\n"
          ]
        }
      ]
    },
    {
      "cell_type": "code",
      "source": [],
      "metadata": {
        "id": "TLT882QVo0N0"
      },
      "execution_count": null,
      "outputs": []
    },
    {
      "cell_type": "markdown",
      "source": [
        "previous_input_path = '/content/drive/MyDrive/GPTData/kyon_alpaca/input'\n",
        "\n",
        "请为我实现一个python函数\n",
        "\n",
        "find_jsonl( role_name, previous_input_path )\n",
        "\n",
        "在previous_input_path中，寻找一个，以role_name开头，并且名字中不包含'Chinese'的文件\n",
        "\n",
        "如果找不到则返回None, 请用python为我实现"
      ],
      "metadata": {
        "id": "r5nzykBrx15j"
      }
    },
    {
      "cell_type": "code",
      "source": [
        "import os\n",
        "\n",
        "previous_input_path = '/content/drive/MyDrive/GPTData/kyon_alpaca/'\n",
        "\n",
        "def find_jsonl(role_name, previous_input_path):\n",
        "    res = []\n",
        "    for filename in os.listdir(previous_input_path):\n",
        "        # if filename.startswith(role_name):\n",
        "        if role_name in filename:\n",
        "            res.append(filename)\n",
        "            # return os.path.join( filename)\n",
        "\n",
        "    if len(res)==0:\n",
        "        return None\n",
        "    else:\n",
        "        return res\n",
        "\n",
        "print(find_jsonl('tangshiye',previous_input_path))"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "FLVeH0pUxhJP",
        "outputId": "fc98089c-1058-4edb-e4f8-fface8ecf071"
      },
      "execution_count": null,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "['tangshiye_test_output_dialogue.jsonl']\n"
          ]
        }
      ]
    },
    {
      "cell_type": "markdown",
      "source": [
        "## 有待生成的数据统计"
      ],
      "metadata": {
        "id": "9kTcLtompMhH"
      }
    },
    {
      "cell_type": "code",
      "source": [
        "import os\n",
        "import zipfile\n",
        "\n",
        "\n",
        "target_line = 1079\n",
        "\n",
        "output_path = '/content/previous_input.zip'\n",
        "\n",
        "zf = zipfile.ZipFile(output_path, 'w')\n",
        "\n",
        "require_count = 0\n",
        "\n",
        "print('role_name | previous_file | still_required_lines')\n",
        "\n",
        "for role in role2freq:\n",
        "    res = target_line -role2freq[role] - role2syn[role]\n",
        "    # if role2freq[role] < target_line:\n",
        "    if res > 0:\n",
        "        # print( role, ' need to augment , required lines = ', target_line - role2freq[role])\n",
        "        # previous_input_path = '/content/drive/MyDrive/GPTData/kyon_alpaca/input'\n",
        "        filepath = find_jsonl(role, previous_input_path)\n",
        "        # if filepath:\n",
        "            # file_path = os.path.join(previous_input_path, filepath)\n",
        "            # zf.write(file_path, arcname=filepath)\n",
        "\n",
        "\n",
        "\n",
        "        if filepath is not None:\n",
        "            print( role, '|', filepath, '|', res )\n",
        "        else:\n",
        "            print( role, '|', '', '|', res )\n",
        "\n",
        "        require_count += (res)\n",
        "\n",
        "\n",
        "print('\\n still required total ', require_count)\n",
        "\n",
        "zf.close()"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "ALKcmTOTyaes",
        "outputId": "f1f429f3-6ffb-466a-d1c2-132c3b9d0a80"
      },
      "execution_count": null,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "role_name | previous_file | still_required_lines\n",
            "wangduoyu | ['wangduoyu_test_output_dialogue.jsonl'] | 718\n",
            "tangshiye | ['tangshiye_test_output_dialogue.jsonl'] | 876\n",
            "baizhantang | ['mws811_baizhantang_test_output_dialogue.jsonl'] | 197\n",
            "guofurong | ['mws811_guofurong_test_output_dialogue.jsonl'] | 161\n",
            "jiumozhi | ['jiumozhi_test_output_dialogue.jsonl', 'mws813_jiumozhi_test_output_dialogue.jsonl'] | 314\n",
            "duanyu | ['mws812_duanyu_test_output_dialogue.jsonl'] | 108\n",
            "murongfu | ['murongfu_test_output_dialogue.jsonl'] | 728\n",
            "qiaofeng | ['qiaofeng_test_output_dialogue.jsonl'] | 470\n",
            "wangyuyan | ['wangyuyan_test_output_dialogue.jsonl'] | 740\n",
            "xiaofeng | ['mws812_xiaofeng_test_output_dialogue.jsonl'] | 577\n",
            "xuzhu | ['mws812_xuzhu_test_output_dialogue.jsonl'] | 539\n",
            "Luna | ['Luna_test_output_dialogue.jsonl', 'Luna_Chinese_dialogue.jsonl'] | 732\n",
            "Malfoy | ['Malfoy_Chinese_dialogue.jsonl', 'mws813_Malfoy_test_output_dialogue.jsonl'] | 275\n",
            "McGonagall | ['McGonagall_Chinese_dialogue.jsonl'] | 620\n",
            "ayaka | ['mws811_ayaka_test_output_dialogue.jsonl'] | 347\n",
            "wanderer | ['mws812_wanderer_test_output_dialogue.jsonl'] | 735\n",
            "zhongli | ['mws811_zhongli_test_output_dialogue.jsonl', 'mws813_zhongli_test_output_dialogue.jsonl'] | 530\n",
            "raidenShogun | ['mws811_raidenShogun_test_output_dialogue.jsonl'] | 685\n",
            "hutao | ['mws812_hutao_test_output_dialogue.jsonl'] | 498\n",
            "Raj | ['Raj_Chinese_dialogue.jsonl', 'mws813_Raj_test_output_dialogue.jsonl'] | 15\n",
            "\n",
            " still required total  9865\n"
          ]
        }
      ]
    },
    {
      "cell_type": "code",
      "source": [
        "from google.colab import drive\n",
        "drive.mount('/content/drive')\n",
        "\n"
      ],
      "metadata": {
        "id": "cntNaxpMzeYn",
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "outputId": "c9be8dfb-6974-4226-9d90-dfecf01ec6e5"
      },
      "execution_count": null,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "Drive already mounted at /content/drive; to attempt to forcibly remount, call drive.mount(\"/content/drive\", force_remount=True).\n"
          ]
        }
      ]
    },
    {
      "cell_type": "code",
      "source": [
        "import os\n",
        "import json\n",
        "\n",
        "remove_file = ['haruhi_test_output_dialogue.jsonl', 'haruhi_800_synthesis_dialogue.jsonl', 'liyunlong_800_synthesis_dialogue.jsonl']\n",
        "\n",
        "data_dir = '/content/drive/MyDrive/GPTData/kyon'\n",
        "\n",
        "role2freq = {}\n",
        "\n",
        "for filename in os.listdir(data_dir):\n",
        "    if filename in remove_file:\n",
        "        continue\n",
        "    if filename.endswith('.jsonl'):\n",
        "        role = filename.split('_')[0]\n",
        "        filepath = os.path.join(data_dir, filename)\n",
        "        line_count = 0\n",
        "        with open(filepath, 'r', encoding='utf-8') as f:\n",
        "            for line in f:\n",
        "                line_count += 1\n",
        "        if role not in role2freq:\n",
        "            role2freq[role] = line_count\n",
        "        else:\n",
        "            role2freq[role] += line_count\n",
        "\n",
        "print(role2freq)"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "2EwejGI8S8wS",
        "outputId": "82a2b0e2-56c4-49f8-8956-1da8d5a92bb7"
      },
      "execution_count": null,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "{'haruhi': 454, 'liyunlong': 917, 'wangduoyu': 115, 'tangshiye': 75, 'weixiaobao': 2300, 'baizhantang': 716, 'tongxiangyu': 839, 'guofurong': 584, 'jiumozhi': 85, 'duanyu': 484, 'murongfu': 155, 'qiaofeng': 182, 'wangyuyan': 188, 'xiaofeng': 244, 'xuzhu': 197, 'Luna': 67, 'Malfoy': 157, 'Dumbledore': 419, 'Ron': 1343, 'Hermione': 1374, 'Snape': 197, 'Harry': 2771, 'McGonagall': 168, 'ayaka': 198, 'wanderer': 83, 'zhongli': 73, 'raidenShogun': 75, 'hutao': 76, 'yuqian': 5673, 'Sheldon': 1318, 'Penny': 879, 'Raj': 346}\n"
          ]
        }
      ]
    },
    {
      "cell_type": "code",
      "source": [
        "!git clone https://github.com/LC1332/Chat-Haruhi-Suzumiya"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "HXz2yUVxTDHu",
        "outputId": "704250e8-ec36-4fce-8c01-d625f11814f2"
      },
      "execution_count": null,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "Cloning into 'Chat-Haruhi-Suzumiya'...\n",
            "remote: Enumerating objects: 17369, done.\u001b[K\n",
            "remote: Counting objects: 100% (1852/1852), done.\u001b[K\n",
            "remote: Compressing objects: 100% (1628/1628), done.\u001b[K\n",
            "remote: Total 17369 (delta 262), reused 1759 (delta 216), pack-reused 15517\u001b[K\n",
            "Receiving objects: 100% (17369/17369), 442.62 MiB | 19.76 MiB/s, done.\n",
            "Resolving deltas: 100% (2640/2640), done.\n",
            "Updating files: 100% (11932/11932), done.\n"
          ]
        }
      ]
    },
    {
      "cell_type": "markdown",
      "source": [
        "role2freq是一个 string to int的字典\n",
        "\n",
        "我希望建立另一两string to int 的字典role2txt_num, role2txt_sumlen\n",
        "\n",
        "对于每个role2freq的key（称为role)\n",
        "\n",
        "扫描/content/Chat-Haruhi-Suzumiya/characters/{role}/texts\n",
        "\n",
        "下共有多少个txts文件，把这个数量存储到 role2txt_num\n",
        "\n",
        "依次以utf-8格式读取每个文件，统计字符串的长度之和 统计到 role2txt_sumlen\n",
        "\n",
        "请用python为我实现"
      ],
      "metadata": {
        "id": "Qb43-77FTS5K"
      }
    },
    {
      "cell_type": "code",
      "source": [
        "!pip -q install tiktoken\n",
        "import tiktoken\n",
        "\n",
        "enc = tiktoken.get_encoding(\"cl100k_base\")"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "KihzjmzZUgGk",
        "outputId": "9d48a509-614b-483c-ea69-156378b0c014"
      },
      "execution_count": null,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "\u001b[?25l     \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m0.0/1.7 MB\u001b[0m \u001b[31m?\u001b[0m eta \u001b[36m-:--:--\u001b[0m\r\u001b[2K     \u001b[91m━━\u001b[0m\u001b[91m╸\u001b[0m\u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m0.1/1.7 MB\u001b[0m \u001b[31m3.3 MB/s\u001b[0m eta \u001b[36m0:00:01\u001b[0m\r\u001b[2K     \u001b[91m━━━━━━━━━\u001b[0m\u001b[91m╸\u001b[0m\u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m0.4/1.7 MB\u001b[0m \u001b[31m6.1 MB/s\u001b[0m eta \u001b[36m0:00:01\u001b[0m\r\u001b[2K     \u001b[91m━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[90m╺\u001b[0m\u001b[90m━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m0.8/1.7 MB\u001b[0m \u001b[31m7.6 MB/s\u001b[0m eta \u001b[36m0:00:01\u001b[0m\r\u001b[2K     \u001b[91m━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[91m╸\u001b[0m\u001b[90m━━━━━━━━━━━━━━\u001b[0m \u001b[32m1.1/1.7 MB\u001b[0m \u001b[31m7.9 MB/s\u001b[0m eta \u001b[36m0:00:01\u001b[0m\r\u001b[2K     \u001b[91m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[91m╸\u001b[0m\u001b[90m━━\u001b[0m \u001b[32m1.6/1.7 MB\u001b[0m \u001b[31m9.4 MB/s\u001b[0m eta \u001b[36m0:00:01\u001b[0m\r\u001b[2K     \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m1.7/1.7 MB\u001b[0m \u001b[31m8.9 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n",
            "\u001b[?25h"
          ]
        }
      ]
    },
    {
      "cell_type": "code",
      "source": [
        "role2txt_num = {}\n",
        "role2txt_sumlen = {}\n",
        "role2txt_tokenlen = {}\n",
        "\n",
        "for role in role2freq:\n",
        "    path = f\"/content/Chat-Haruhi-Suzumiya/characters/{role}/texts\"\n",
        "    txt_files = [f for f in os.listdir(path) if f.endswith(\".txt\")]\n",
        "    role2txt_num[role] = len(txt_files)\n",
        "\n",
        "    total_len = 0\n",
        "    total_token = 0\n",
        "    for txt_file in txt_files:\n",
        "        with open(os.path.join(path, txt_file), encoding='utf-8') as f:\n",
        "            text = f.read()\n",
        "            tokenlen = len(enc.encode(text))\n",
        "            total_token += tokenlen\n",
        "            total_len += len(text)\n",
        "    role2txt_sumlen[role] = total_len\n",
        "    role2txt_tokenlen[role] = total_token\n",
        "\n",
        "print(role2txt_num)\n",
        "print(role2txt_sumlen)"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "ASeAYcX7Tk-3",
        "outputId": "64cd25b7-4fe3-4730-e39c-b6d025999a96"
      },
      "execution_count": null,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "{'haruhi': 172, 'liyunlong': 420, 'wangduoyu': 46, 'tangshiye': 42, 'weixiaobao': 1048, 'baizhantang': 295, 'tongxiangyu': 276, 'guofurong': 224, 'jiumozhi': 57, 'duanyu': 328, 'murongfu': 116, 'qiaofeng': 129, 'wangyuyan': 141, 'xiaofeng': 159, 'xuzhu': 132, 'Luna': 46, 'Malfoy': 99, 'Dumbledore': 210, 'Ron': 788, 'Hermione': 781, 'Snape': 101, 'Harry': 1407, 'McGonagall': 92, 'ayaka': 117, 'wanderer': 180, 'zhongli': 270, 'raidenShogun': 215, 'hutao': 141, 'yuqian': 1726, 'Sheldon': 285, 'Penny': 152, 'Raj': 129}\n",
            "{'haruhi': 33526, 'liyunlong': 86907, 'wangduoyu': 10403, 'tangshiye': 8102, 'weixiaobao': 212437, 'baizhantang': 44042, 'tongxiangyu': 54435, 'guofurong': 36313, 'jiumozhi': 8307, 'duanyu': 41634, 'murongfu': 15553, 'qiaofeng': 19811, 'wangyuyan': 17663, 'xiaofeng': 21084, 'xuzhu': 17485, 'Luna': 13025, 'Malfoy': 42267, 'Dumbledore': 151997, 'Ron': 396932, 'Hermione': 458034, 'Snape': 59623, 'Harry': 929728, 'McGonagall': 50150, 'ayaka': 33380, 'wanderer': 77524, 'zhongli': 47136, 'raidenShogun': 26700, 'hutao': 16455, 'yuqian': 204552, 'Sheldon': 258959, 'Penny': 155246, 'Raj': 76270}\n"
          ]
        }
      ]
    },
    {
      "cell_type": "code",
      "source": [
        "print(role2txt_tokenlen)\n"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "E8uZfd_hTP8E",
        "outputId": "c2efcb11-9551-41ad-acda-15d8b414971e"
      },
      "execution_count": null,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "{'haruhi': 41262, 'liyunlong': 116179, 'wangduoyu': 13123, 'tangshiye': 10598, 'weixiaobao': 287876, 'baizhantang': 58343, 'tongxiangyu': 72666, 'guofurong': 49113, 'jiumozhi': 11343, 'duanyu': 54510, 'murongfu': 20544, 'qiaofeng': 26656, 'wangyuyan': 23511, 'xiaofeng': 28531, 'xuzhu': 22905, 'Luna': 3992, 'Malfoy': 11763, 'Dumbledore': 39371, 'Ron': 111674, 'Hermione': 126515, 'Snape': 16354, 'Harry': 252109, 'McGonagall': 13487, 'ayaka': 42362, 'wanderer': 78107, 'zhongli': 59932, 'raidenShogun': 32816, 'hutao': 21038, 'yuqian': 263421, 'Sheldon': 76961, 'Penny': 47656, 'Raj': 23347}\n"
          ]
        }
      ]
    },
    {
      "cell_type": "code",
      "source": [
        "import os\n",
        "\n",
        "folder_names = ['tangshiye','murongfu','liyunlong',\n",
        "                'Luna','wangduoyu','Ron','jiumozhi',\n",
        "                'Snape','haruhi','Malfoy','xuzhu',\n",
        "                'xiaofeng','duanyu','Hermione','Dumbledore',\n",
        "                'wangyuyan',\n",
        "                'Harry','McGonagall' ,\n",
        "                'baizhantang','tongxiangyu','guofurong',\n",
        "                'wanderer','zhongli','hutao',\n",
        "                'Sheldon','Raj','Penny',\n",
        "                'weixiaobao','qiaofeng','ayaka',\n",
        "                'raidenShogun','yuqian']\n",
        "\n",
        "character_names = ['汤师爷','慕容复','李云龙',\n",
        "              'Luna','王多鱼','Ron','鸠摩智',\n",
        "              'Snape','凉宫春日','Malfoy','虚竹',\n",
        "              '萧峰','段誉','Hermione','Dumbledore',\n",
        "              '王语嫣',\n",
        "              'Harry','McGonagall',\n",
        "              '白展堂','佟湘玉','郭芙蓉',\n",
        "              '流浪者','钟离','胡桃',\n",
        "              'Sheldon','Raj','Penny',\n",
        "              '韦小宝','乔峰','神里绫华',\n",
        "              '雷电将军','于谦']\n",
        "\n",
        "vis_order = ['凉宫春日','李云龙',\n",
        "             'Harry','Hermione','Ron','Dumbledore','Snape','Malfoy','Luna','McGonagall',\n",
        "             'Sheldon','Raj','Penny',\n",
        "             '虚竹','萧峰','乔峰','段誉','慕容复','鸠摩智','王语嫣',\n",
        "             '韦小宝',\n",
        "             '白展堂','佟湘玉','郭芙蓉',\n",
        "             '流浪者','钟离','胡桃','神里绫华', '雷电将军',\n",
        "              '王多鱼',\n",
        "              '汤师爷',\n",
        "             '于谦']\n",
        "\n",
        "ch2en = {}\n",
        "\n",
        "for character, name in zip(character_names, folder_names):\n",
        "    ch2en[character] = name"
      ],
      "metadata": {
        "id": "iFxbGB18UwFi"
      },
      "execution_count": null,
      "outputs": []
    },
    {
      "cell_type": "code",
      "source": [
        "\n",
        "\n",
        "count = 0\n",
        "\n",
        "for vis in vis_order:\n",
        "    ch_role_name = vis\n",
        "    en_name = ch2en[vis]\n",
        "    lines = role2freq[en_name]\n",
        "    txt_num = role2txt_num[en_name]\n",
        "    txt_sumlen = role2txt_sumlen[en_name]\n",
        "    txt_tokenlen = role2txt_tokenlen[en_name]\n",
        "    syn_dialogues = role2syn[en_name]\n",
        "\n",
        "    count = count + 1\n",
        "\n",
        "    if False:\n",
        "        print(en_name, '|' , txt_num , '|' , lines, '|', txt_tokenlen, '|', syn_dialogues , end = '|')\n",
        "    else:\n",
        "        print(en_name, '|' , txt_num , '|' , lines, '|', syn_dialogues , '|', txt_tokenlen)"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "V9peHpw7WDJv",
        "outputId": "8ff719ff-dfec-4c72-89d9-1599472da617"
      },
      "execution_count": null,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "haruhi | 172 | 454 | 709 | 41262\n",
            "liyunlong | 420 | 917 | 914 | 116179\n",
            "Harry | 1407 | 2771 | 2409 | 252109\n",
            "Hermione | 781 | 1374 | 2206 | 126515\n",
            "Ron | 788 | 1343 | 2345 | 111674\n",
            "Dumbledore | 210 | 419 | 908 | 39371\n",
            "Snape | 101 | 197 | 904 | 16354\n",
            "Malfoy | 99 | 157 | 647 | 11763\n",
            "Luna | 46 | 67 | 280 | 3992\n",
            "McGonagall | 92 | 168 | 1472 | 13487\n",
            "Sheldon | 285 | 1318 | 614 | 76961\n",
            "Raj | 129 | 346 | 718 | 23347\n",
            "Penny | 152 | 879 | 339 | 47656\n",
            "xuzhu | 132 | 197 | 876 | 22905\n",
            "xiaofeng | 159 | 244 | 781 | 28531\n",
            "qiaofeng | 129 | 182 | 3039 | 26656\n",
            "duanyu | 328 | 484 | 487 | 54510\n",
            "murongfu | 116 | 155 | 1652 | 20544\n",
            "jiumozhi | 57 | 85 | 1968 | 11343\n",
            "wangyuyan | 141 | 188 | 1400 | 23511\n",
            "weixiaobao | 1048 | 2300 | 213 | 287876\n",
            "baizhantang | 295 | 716 | 166 | 58343\n",
            "tongxiangyu | 276 | 839 | 377 | 72666\n",
            "guofurong | 224 | 584 | 334 | 49113\n",
            "wanderer | 180 | 83 | 637 | 78107\n",
            "zhongli | 270 | 73 | 476 | 59932\n",
            "hutao | 141 | 76 | 796 | 21038\n",
            "ayaka | 117 | 198 | 1240 | 42362\n",
            "raidenShogun | 215 | 75 | 513 | 32816\n",
            "wangduoyu | 46 | 115 | 1223 | 13123\n",
            "tangshiye | 42 | 75 | 1331 | 10598\n",
            "yuqian | 1726 | 5673 | 0 | 263421\n"
          ]
        }
      ]
    },
    {
      "cell_type": "code",
      "source": [],
      "metadata": {
        "id": "BMSz5E9fWPJZ"
      },
      "execution_count": null,
      "outputs": []
    },
    {
      "cell_type": "markdown",
      "source": [
        "## 最终画图统计"
      ],
      "metadata": {
        "id": "V8Gx3XzapiTX"
      }
    },
    {
      "cell_type": "code",
      "source": [
        "#@title 生成role2freq\n",
        "\n",
        "import os\n",
        "import json\n",
        "\n",
        "remove_file = ['haruhi_test_output_dialogue.jsonl', 'haruhi_800_synthesis_dialogue.jsonl', 'liyunlong_800_synthesis_dialogue.jsonl']\n",
        "\n",
        "data_dir = '/content/drive/MyDrive/GPTData/kyon'\n",
        "\n",
        "role2freq = {}\n",
        "\n",
        "for filename in os.listdir(data_dir):\n",
        "    if filename in remove_file:\n",
        "        continue\n",
        "    if filename.endswith('.jsonl'):\n",
        "        role = filename.split('_')[0]\n",
        "        filepath = os.path.join(data_dir, filename)\n",
        "        line_count = 0\n",
        "        with open(filepath, 'r', encoding='utf-8') as f:\n",
        "            for line in f:\n",
        "                line_count += 1\n",
        "        if role not in role2freq:\n",
        "            role2freq[role] = line_count\n",
        "        else:\n",
        "            role2freq[role] += line_count\n",
        "\n",
        "print(role2freq)"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "mf3EymgQpjgZ",
        "outputId": "f458d458-94c1-465a-d40c-8c18c4848539"
      },
      "execution_count": null,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "{'haruhi': 454, 'liyunlong': 917, 'wangduoyu': 115, 'tangshiye': 75, 'weixiaobao': 2300, 'baizhantang': 716, 'tongxiangyu': 839, 'guofurong': 584, 'jiumozhi': 85, 'duanyu': 484, 'murongfu': 155, 'qiaofeng': 182, 'wangyuyan': 188, 'xiaofeng': 244, 'xuzhu': 197, 'Luna': 67, 'Malfoy': 157, 'Dumbledore': 419, 'Ron': 1343, 'Hermione': 1374, 'Snape': 197, 'Harry': 2771, 'McGonagall': 168, 'ayaka': 198, 'wanderer': 83, 'zhongli': 73, 'raidenShogun': 75, 'hutao': 76, 'yuqian': 5673, 'Sheldon': 1318, 'Penny': 879, 'Raj': 346}\n"
          ]
        }
      ]
    },
    {
      "cell_type": "code",
      "source": [
        "# 对模拟的数据进行统计\n",
        "\n",
        "role2freq_syn = {}\n",
        "\n",
        "folder_names = ['tangshiye','murongfu','liyunlong',\n",
        "                'Luna','wangduoyu','Ron','jiumozhi',\n",
        "                'Snape','haruhi','Malfoy','xuzhu',\n",
        "                'xiaofeng','duanyu','Hermione','Dumbledore',\n",
        "                'wangyuyan',\n",
        "                'Harry','McGonagall' ,\n",
        "                'baizhantang','tongxiangyu','guofurong',\n",
        "                'wanderer','zhongli','hutao',\n",
        "                'Sheldon','Raj','Penny',\n",
        "                'weixiaobao','qiaofeng','ayaka',\n",
        "                'raidenShogun','yuqian']\n",
        "\n",
        "data_dir = '/content/drive/MyDrive/GPTData/kyon_alpaca'\n",
        "\n",
        "total_lines = 0\n",
        "count = 0\n",
        "\n",
        "line_count_alpaca = 0\n",
        "\n",
        "for filename in os.listdir(data_dir):\n",
        "    if filename.endswith('.jsonl'):\n",
        "        count += 1\n",
        "        filepath = os.path.join(data_dir, filename)\n",
        "        line_count = 0\n",
        "        with open(filepath, 'r', encoding='utf-8') as f:\n",
        "            for line in f:\n",
        "                line_count += 1\n",
        "\n",
        "        line_count_alpaca += line_count\n",
        "        flag = True\n",
        "        for folder_name in folder_names:\n",
        "            if folder_name in filename:\n",
        "                role = folder_name\n",
        "                flag = False\n",
        "                if role not in role2freq_syn:\n",
        "                    role2freq_syn[role] = line_count\n",
        "                else:\n",
        "                    role2freq_syn[role] += line_count\n",
        "\n",
        "                break\n",
        "\n",
        "        if flag:\n",
        "            print( 'file unfound role' , filename)\n",
        "\n",
        "print(role2freq_syn)\n",
        "print(line_count_alpaca)\n",
        "\n",
        "\n",
        "print(role2freq)\n",
        "\n",
        "#         print(f'{filename}: {line_count} lines')\n",
        "#         total_lines += line_count\n",
        "\n",
        "# print(f'Total lines in all files: {total_lines}')\n",
        "\n",
        "# print(count,' files found')"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "eHhri3_7plhg",
        "outputId": "6ce7e7a9-fff1-4ab6-b602-cdd18859f939"
      },
      "execution_count": null,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "{'haruhi': 709, 'qiaofeng': 3039, 'weixiaobao': 213, 'tangshiye': 1331, 'murongfu': 1652, 'liyunlong': 914, 'jiumozhi': 1968, 'wangduoyu': 1223, 'Luna': 280, 'Ron': 2345, 'wangyuyan': 1400, 'Sheldon': 614, 'Raj': 718, 'Penny': 339, 'Harry': 2409, 'Dumbledore': 908, 'Snape': 904, 'McGonagall': 1472, 'Malfoy': 647, 'baizhantang': 166, 'guofurong': 334, 'zhongli': 476, 'ayaka': 1240, 'raidenShogun': 513, 'Hermione': 2206, 'xuzhu': 876, 'xiaofeng': 781, 'duanyu': 487, 'tongxiangyu': 377, 'wanderer': 637, 'hutao': 796}\n",
            "31974\n",
            "{'haruhi': 454, 'liyunlong': 917, 'wangduoyu': 115, 'tangshiye': 75, 'weixiaobao': 2300, 'baizhantang': 716, 'tongxiangyu': 839, 'guofurong': 584, 'jiumozhi': 85, 'duanyu': 484, 'murongfu': 155, 'qiaofeng': 182, 'wangyuyan': 188, 'xiaofeng': 244, 'xuzhu': 197, 'Luna': 67, 'Malfoy': 157, 'Dumbledore': 419, 'Ron': 1343, 'Hermione': 1374, 'Snape': 197, 'Harry': 2771, 'McGonagall': 168, 'ayaka': 198, 'wanderer': 83, 'zhongli': 73, 'raidenShogun': 75, 'hutao': 76, 'yuqian': 5673, 'Sheldon': 1318, 'Penny': 879, 'Raj': 346}\n"
          ]
        }
      ]
    },
    {
      "cell_type": "code",
      "source": [
        "print(2206/30)"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "X1ziXbJOwmpa",
        "outputId": "87e53832-c4aa-47d9-a1f9-6da7e141707e"
      },
      "execution_count": null,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "73.53333333333333\n"
          ]
        }
      ]
    },
    {
      "cell_type": "code",
      "source": [
        "# count and increase\n",
        "\n",
        "target_line = 0\n",
        "\n",
        "role2sum = {}\n",
        "role2syn_est = {}\n",
        "\n",
        "# role2freq_syn['Hermione'] = 2206\n",
        "\n",
        "count = 0\n",
        "increase_count = 0\n",
        "\n",
        "\n",
        "for folder_name in folder_names:\n",
        "    freq_real = role2freq[folder_name]\n",
        "    if folder_name in role2freq_syn:\n",
        "        freq_syn = role2freq_syn[folder_name]\n",
        "    else:\n",
        "        freq_syn = 0\n",
        "\n",
        "    if freq_syn + freq_real < target_line:\n",
        "        role2syn_est[folder_name] = target_line - freq_real\n",
        "        increase_count += (target_line - freq_real - freq_syn)\n",
        "    else:\n",
        "        role2syn_est[folder_name] = freq_syn\n",
        "\n",
        "    role2sum[folder_name] = role2syn_est[folder_name] + freq_real\n",
        "    count += role2sum[folder_name]\n",
        "\n",
        "print(role2sum)\n",
        "print(role2freq)\n",
        "print(role2syn_est)\n",
        "print(count)\n",
        "print(increase_count)\n",
        "\n"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "E2nLiMIwsyXW",
        "outputId": "cd217ccb-9799-4eb2-c70d-a8bdd868aacd"
      },
      "execution_count": null,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "{'tangshiye': 1406, 'murongfu': 1807, 'liyunlong': 1831, 'Luna': 347, 'wangduoyu': 1338, 'Ron': 3688, 'jiumozhi': 2053, 'Snape': 1101, 'haruhi': 1163, 'Malfoy': 804, 'xuzhu': 1073, 'xiaofeng': 1025, 'duanyu': 971, 'Hermione': 3580, 'Dumbledore': 1327, 'wangyuyan': 1588, 'Harry': 5180, 'McGonagall': 1640, 'baizhantang': 882, 'tongxiangyu': 1216, 'guofurong': 918, 'wanderer': 720, 'zhongli': 549, 'hutao': 872, 'Sheldon': 1932, 'Raj': 1064, 'Penny': 1218, 'weixiaobao': 2513, 'qiaofeng': 3221, 'ayaka': 1438, 'raidenShogun': 588, 'yuqian': 5673}\n",
            "{'haruhi': 454, 'liyunlong': 917, 'wangduoyu': 115, 'tangshiye': 75, 'weixiaobao': 2300, 'baizhantang': 716, 'tongxiangyu': 839, 'guofurong': 584, 'jiumozhi': 85, 'duanyu': 484, 'murongfu': 155, 'qiaofeng': 182, 'wangyuyan': 188, 'xiaofeng': 244, 'xuzhu': 197, 'Luna': 67, 'Malfoy': 157, 'Dumbledore': 419, 'Ron': 1343, 'Hermione': 1374, 'Snape': 197, 'Harry': 2771, 'McGonagall': 168, 'ayaka': 198, 'wanderer': 83, 'zhongli': 73, 'raidenShogun': 75, 'hutao': 76, 'yuqian': 5673, 'Sheldon': 1318, 'Penny': 879, 'Raj': 346}\n",
            "{'tangshiye': 1331, 'murongfu': 1652, 'liyunlong': 914, 'Luna': 280, 'wangduoyu': 1223, 'Ron': 2345, 'jiumozhi': 1968, 'Snape': 904, 'haruhi': 709, 'Malfoy': 647, 'xuzhu': 876, 'xiaofeng': 781, 'duanyu': 487, 'Hermione': 2206, 'Dumbledore': 908, 'wangyuyan': 1400, 'Harry': 2409, 'McGonagall': 1472, 'baizhantang': 166, 'tongxiangyu': 377, 'guofurong': 334, 'wanderer': 637, 'zhongli': 476, 'hutao': 796, 'Sheldon': 614, 'Raj': 718, 'Penny': 339, 'weixiaobao': 213, 'qiaofeng': 3039, 'ayaka': 1240, 'raidenShogun': 513, 'yuqian': 0}\n",
            "54726\n",
            "0\n"
          ]
        }
      ]
    },
    {
      "cell_type": "code",
      "source": [
        "en_roles = [  'Luna','Ron',\n",
        "                'Snape','Malfoy','Hermione','Dumbledore',\n",
        "                'Harry','McGonagall' ,\n",
        "                'Sheldon','Raj','Penny']\n",
        "\n",
        "en_count = 0\n",
        "for role in en_roles:\n",
        "    real = role2freq[role]\n",
        "    syn = role2freq_syn[role]\n",
        "    if real + syn >= target_line:\n",
        "        en_count += real\n",
        "    else:\n",
        "        en_count += (real + target_line - real - syn)\n",
        "\n",
        "print(en_count)"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "ZNRnVrkbtBMG",
        "outputId": "c4429cac-020f-483a-bdc6-4c877a148c13"
      },
      "execution_count": null,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "9039\n"
          ]
        }
      ]
    },
    {
      "cell_type": "markdown",
      "source": [
        "已知folder_names是一个python的list of string\n",
        "\n",
        "role2sum和role2freq是两个string2int的字典\n",
        "\n",
        "role2sum[folder_name] 和 role2freq[folder_name] 都能确保返回数字\n",
        "\n",
        "我现在希望对folder_names，以role2sum作为第一关键字从小到大排列\n",
        "\n",
        "如果两个name的role2sum相等，则进一步比较他们的role2freq，小的排序在前面\n",
        "\n",
        "输出一个list of string\n",
        "\n",
        "请用python为我实现"
      ],
      "metadata": {
        "id": "bbHyQxk5p1j0"
      }
    },
    {
      "cell_type": "code",
      "source": [
        "sorted_folder_names = sorted(folder_names, key=lambda x: (role2sum[x], role2freq[x]))"
      ],
      "metadata": {
        "id": "kckK-Kz4vye3"
      },
      "execution_count": null,
      "outputs": []
    },
    {
      "cell_type": "code",
      "source": [
        "print(sorted_folder_names)"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "vIJ_dFR1v04N",
        "outputId": "e0a856b0-e921-478e-afed-25cbb027d913"
      },
      "execution_count": null,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "['Luna', 'zhongli', 'raidenShogun', 'wanderer', 'Malfoy', 'hutao', 'baizhantang', 'guofurong', 'duanyu', 'xiaofeng', 'Raj', 'xuzhu', 'Snape', 'haruhi', 'tongxiangyu', 'Penny', 'Dumbledore', 'wangduoyu', 'tangshiye', 'ayaka', 'wangyuyan', 'McGonagall', 'murongfu', 'liyunlong', 'Sheldon', 'jiumozhi', 'weixiaobao', 'qiaofeng', 'Hermione', 'Ron', 'Harry', 'yuqian']\n"
          ]
        }
      ]
    },
    {
      "cell_type": "code",
      "source": [
        "sorted_sum = []\n",
        "sorted_real = []\n",
        "sorted_syn = []\n",
        "\n",
        "for name in sorted_folder_names:\n",
        "    sorted_sum.append(role2sum[name])\n",
        "    sorted_real.append(role2freq[name])\n",
        "    sorted_syn.append(role2syn_est[name])\n"
      ],
      "metadata": {
        "id": "xK-1hA2kw27c"
      },
      "execution_count": null,
      "outputs": []
    },
    {
      "cell_type": "code",
      "source": [
        "character_names = ['汤师爷','慕容复','李云龙',\n",
        "              'Luna','王多鱼','Ron','鸠摩智',\n",
        "              'Snape','凉宫春日','Malfoy','虚竹',\n",
        "              '萧峰','段誉','Hermione','Dumbledore',\n",
        "              '王语嫣',\n",
        "              'Harry','McGonagall',\n",
        "              '白展堂','佟湘玉','郭芙蓉',\n",
        "              '流浪者','钟离','胡桃',\n",
        "              'Sheldon','Raj','Penny',\n",
        "              '韦小宝','乔峰','神里绫华',\n",
        "              '雷电将军','于谦']\n",
        "\n",
        "vis_order = ['凉宫春日','李云龙',\n",
        "             'Harry','Hermione','Ron','Dumbledore','Snape','Malfoy','Luna','McGonagall',\n",
        "             'Sheldon','Raj','Penny',\n",
        "             '虚竹','萧峰','乔峰','段誉','慕容复','鸠摩智','王语嫣',\n",
        "             '韦小宝',\n",
        "             '白展堂','佟湘玉','郭芙蓉',\n",
        "             '流浪者','钟离','胡桃','神里绫华', '雷电将军',\n",
        "              '王多鱼',\n",
        "              '汤师爷',\n",
        "             '于谦']\n",
        "\n",
        "ch2en = {}\n",
        "en2ch = {}\n",
        "\n",
        "for character, name in zip(character_names, folder_names):\n",
        "    ch2en[character] = name\n",
        "    en2ch[name] = character"
      ],
      "metadata": {
        "id": "HiuKQSAozfKw"
      },
      "execution_count": null,
      "outputs": []
    },
    {
      "cell_type": "markdown",
      "source": [
        "sorted_real和sorted_syn是两个python的list of int，他们都有30个元素。\n",
        "\n",
        "我希望画一个条形图，其中一共有30个bar\n",
        "\n",
        "每个bar显示sorted_real[i]和sorted_syn[i]的和\n",
        "\n",
        "每个bar使用jet色表上不同的颜色。\n",
        "\n",
        "每个bar分成两段，上段的长度和sorted_syn[i]的值一致，下半段的长度和sorted_real[i]的值一致。 上半段的颜色用原来 颜色*0.5 + 白色 * 0.5 表示\n",
        "\n",
        "请用plt为我实现。\n",
        "\n",
        "\n"
      ],
      "metadata": {
        "id": "HB8nJEw7xDDQ"
      }
    },
    {
      "cell_type": "code",
      "source": [
        "import matplotlib.pyplot as plt\n",
        "import numpy as np\n",
        "\n",
        "plt.rcParams[\"figure.figsize\"] = (22,8)\n",
        "\n",
        "bar_width = 0.5\n",
        "index = np.arange(len(sorted_real))\n",
        "\n",
        "# 计算条形总高度\n",
        "heights = [x+y for x,y in zip(sorted_real, sorted_syn)]\n",
        "\n",
        "# 生成颜色映射\n",
        "cmap = plt.cm.get_cmap('jet', len(sorted_real))\n",
        "colors = cmap(index)\n",
        "\n",
        "# 生成条形图\n",
        "plt.bar(index, heights, bar_width, color=colors)\n",
        "\n",
        "# 设置上半部分混合白色\n",
        "for i in range(len(sorted_real)):\n",
        "    plt.bar(index[i], sorted_syn[i], bar_width, bottom=sorted_real[i],\n",
        "            color=colors[i]*0.5 + 0.5)\n",
        "\n",
        "# 设置坐标轴范围\n",
        "plt.xlim([-0.5, len(sorted_real)-0.5])\n",
        "plt.ylim([0, max(heights)*1.1])\n",
        "\n",
        "# 设置x轴刻度标签\n",
        "plt.xticks(index, sorted_folder_names)\n",
        "\n",
        "# 设置标签旋转角度以免重叠\n",
        "plt.setp(plt.xticks()[1], rotation=37)\n",
        "\n",
        "x = np.arange(len(sorted_real))\n",
        "y = np.array(heights)\n",
        "X, Y = np.meshgrid(x, y)\n",
        "\n",
        "# 画网格线\n",
        "plt.grid(color='k', linestyle='--', linewidth=0.5)\n",
        "\n",
        "# 设置网格线位于条形图下层\n",
        "plt.gca().set_axisbelow(True)\n",
        "\n",
        "# 调整网格线宽度\n",
        "ax = plt.gca()\n",
        "ax.xaxis.grid(False)\n",
        "\n",
        "ax.set_xticklabels(sorted_folder_names)\n",
        "ax.tick_params(axis='both', which='major', labelsize=8)\n",
        "\n",
        "ax = plt.gca()\n",
        "\n",
        "ax.tick_params(axis='both', which='major', labelsize=14)\n",
        "\n",
        "# 设置坐标轴标签\n",
        "# plt.xlabel('Index')\n",
        "# plt.ylabel('Value')\n",
        "\n",
        "plt.show()"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 512
        },
        "id": "0OcOM-03v2eh",
        "outputId": "5646128b-abd5-4824-c975-81be64c67131"
      },
      "execution_count": null,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stderr",
          "text": [
            "<ipython-input-13-35b86d15b134>:13: MatplotlibDeprecationWarning: The get_cmap function was deprecated in Matplotlib 3.7 and will be removed two minor releases later. Use ``matplotlib.colormaps[name]`` or ``matplotlib.colormaps.get_cmap(obj)`` instead.\n",
            "  cmap = plt.cm.get_cmap('jet', len(sorted_real))\n"
          ]
        },
        {
          "output_type": "display_data",
          "data": {
            "text/plain": [
              "<Figure size 2200x800 with 1 Axes>"
            ],
            "image/png": "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jW/kjDPOyJVXXpkkGThwYF555ZXMnj07STJr1qwMGDAgr732Wjp06JALL7wwlZWVSZLLLrss69evz7Rp05IkU6ZMSVVVVVatWpVDDz00AwcOTN++fZMkF1xwQe3nnLy7HezYsWPz3HPP5eCDD86wYcPSu3fvJEmvXr1SVlaWO+64I0lSXV2de+65J8uXL89+++2XcePGpXv37kmSM844IwcccEDGjh2bJLntttsye/bsPPXUU2nRokUmTZqUU045JUly8sknp3379rVnVI4cOTILFizI4sWL07Rp00yfPj1nnnlmNm3alBNOOCHl5eUZOnRokne3tV26dGnmz5+fBg0aZM6cOTnnnHNSU1OTo48+Ol27ds3VV1+dJBk0aFCef/75zJs3L0ny0EMPpV+/fnn99dfTqVOn9OzZMwMGDEiSfO9738vatWsza9asJMn999+fq666KqtXr84RRxyRfv365bLLLkuS9OvXL2+++WamTJmSJJk8eXJGjBiRF154Ie3atcvgwYNrP+c+ffpkt912q912984770x1dXVWrFiR1q1bZ9SoUenVq1eSpGfPnmnRokWqq6uTJD/84Q9z33335emnn07Lli1TXV2d008/PUnSrVu3tGnTpvZ/ELj55pszb968LFmyJHvuuWfuvffenHbaadmyZUtOOumkdOjQISNHjkyS3HjjjVm0aFEef/zxNG7cODNnzkyPHj3y1ltv5fjjj8+xxx6bG264IUkyZMiQLF++PI888kjq16+fuXPn5rzzzssbb7yR8vLynHrqqRk0aFCS5Pvf/35efPHF2u2AH3zwwVRWVmbt2rU58sgjc+6556Z///5JksrKyqxbty4zZsxIEnOEOcIcYY4wR5gjzBHmCHOEOcIcEXOEOcIcYY4wR5gjzBHmCHOEOcIc8feYI7YdofdR1du6devWD1t88cUX5+67707jxo3zwgsvZN999619bcWKFTniiCNy0EEH5YUXXsj06dPTq1evDBkyJCNGjNjhvYYMGZJRo0Zlzpw56datW9asWZP99tsv5eXlefLJJ3eoX7hwYSoqKtK/f//af2kOOeSQrFy5Mps3b97hg9i8eXMaNmyYww8/PM8+++z7jmlnK/1atWr1kQ9JBAAAAAAAgLqqqalJWVnZR86o6hQZbltRd+SRR24X+CVJ+/btc/DBB+eFF17IH//4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MkQAAAAAAAAojHpbt27dWpcbtgV7v/vd7z6wdtKkSbngggvSs2fPTJs2LfXq1UuS3Hnnnbn00ktz8cUXZ8KECbX1K1euzJe//OUcfPDBWbp0acrKypIkzzzzTL7+9a/n4IMPzooVK1K//rsLFN9555186Utfyquvvppf/OIX+epXv5okWb9+fTp16pTf/e53+e1vf5vWrVt/6PHV1NSkrKws69evT/PmzT/0fQAAAAAAALuSXw8bVpI+h1VVlaRPkgz7/2dVpVBVtwjuY2dUn+iZfnfffXeS5KabbqoN/JKkX79+OfjggzNt2rS89dZbtdcnTZqUd955J0OGDKkN/JLkq1/9anr27JnnnnsuTz75ZO31xx9/PC+++GLOPvvs2sAveXcl4rXXXpu3334799577yc4QgAAAAAAAPj0faTQb9OmTZk8eXJGjRqV6urq/PKXv9yh5s9//nN++ctfpl27djustKtXr15OOOGEbNy4MU8//XTt9UWLFiVJKioqdni/Ll26JEkWL178kesBAAAAAABgV/SRzvT7/e9/n/PPP3+7a0cddVRmzJiRNm3aJElefPHFbNmyJW3btt3pe2y7vnLlyhx99NG1/9y0adN84Qtf+Jv122z75531+MIXvpCmTZtuV78zmzZtyqZNm2p/X1NT8zfrAQAAAAAA4LOmzqHf+eefn6OPPjrt27dP06ZN89vf/jZjx47NlClT8q1vfSu//vWv06xZs6xfvz5Jttum869t24t0W922f95nn33qVP9BPf66fmduuummDNvJnrQ9evTIbrvtlmnTpuXaa6/Nyy+/nPbt26eysjKXXHJJkqRv377ZvHlzJk+enCT50Y9+lDFjxuT555/PF7/4xVx33XXp06dPkqR3797ZY489as8wvOOOOzJhwoQ8++yzadWqVW655ZacddZZSZLu3bunZcuWuf3225Mk48aNy4wZM7J06dLss88+mTBhQrp165YkOfXUU9OuXbvcfPPNSZLRo0fnJz/5SX72s5+lefPmmTp1ar773e/mnXfeSZcuXdKpU6cMHz48STJ06NAsWbIkCxcuTKNGjfLAAw/k7LPPzoYNG9K5c+dUVFRkyJAhSZKrr746K1asyI9//OMkycMPP5zzzz8/69atyze+8Y2cccYZufLKK5MkAwcOzCuvvJLZs2cnSWbNmpUBAwbktddeS4cOHXLhhRemsrIySXLZZZdl/fr1mTZtWpJkypQpqaqqyqpVq3LooYdm4MCB6du3b5LkggsuqP2ck3e3jx07dmyee+65HHzwwRk2bFh69+6dJOnVq1fKyspyxx13JEmqq6tzzz33ZPny5dlvv/0ybty4dO/ePUlyxhln5IADDsjYsWOTJLfddltmz56dp556Ki1atMikSZNyyimnJElOPvnktG/fPqNHj06SjBw5MgsWLMjixYvTtGnTTJ8+PWeeeWY2bdqUE044IeXl5Rk6dGiS5Prrr8/SpUszf/78NGjQIHPmzMk555yTmpqaHH300enatWuuvvrqJMmgQYPy/PPPZ968eUmShx56KP369cvrr7+eTp06pWfPnhkwYECS5Hvf+17Wrl2bWbNmJUnuv//+XHXVVVm9enWOOOKI9OvXL5dddlmSd7fWffPNNzNlypQkyeTJkzNixIi88MILadeuXQYPHlz7Offp0ye77bZb7Ta9d955Z6qrq7NixYq0bt06o0aNSq9evZIkPXv2TIsWLVJdXZ0k+eEPf5j77rsvTz/9dFq2bJnq6uqcfvrpSZJu3bqlTZs2ufXWW5MkN998c+bNm5clS5Zkzz33zL333pvTTjstW7ZsyUknnZQOHTpk5MiRSZIbb7wxixYtyuOPP57GjRtn5syZ6dGjR956660cf/zxOfbYY3PDDTckSYYMGZLly5fnkUceSf369TN37tycd955eeONN1JeXp5TTz01gwYNSpJ8//vfz4svvpiHHnooSfLggw+msrIya9euzZFHHplzzz03/fv3T5JUVlZm3bp1mTFjRpKYI8wR5ghzhDnCHGGOMEeYI8wR5oiYI8wR5ghzhDnCHGGOMEeYI3bVOeJLKY1bbrmlZHPEgSUaU5LMnTs3yYefIxo0+Ehr9WrV27q1jqcIvo9zzz03U6ZMyW233ZaBAwfm5z//ecrLy9OrV69MnTp1h/q77747F198ccaOHVs7ETRs2DD77LNPXn311R3qV65cmUMOOSSnnHJK7aRSUVGRhQsXZuXKlfniF7+4wz377bdfNmzY8DeDv52t9GvVqtVHPiQRAAAAAABgV/DrnSya+iQcVlVVkj5JMqxevZL1qqpjBFdTU5OysrKPnFF9pDP9dqZfv35JkiVLliT5n9V37xe4bdtG869X6W0bSF3qP6jH+60C3KZR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kUmTJuWUU05Jkpx88slp3759Ro8eneTdLW4XLFiQxYsXp2nTppk+fXrOPPPMbNq0KSeccELKy8szdOjQJO9uabt06dLMnz8/DRo0yJw5c3LOOeekpqYmRx99dLp27Zqrr746STJo0KA8//zzmTdvXpLkoYceSr9+/fL666+nU6dO6dmzZwYMGJAk+d73vpe1a9dm1qxZSZL7778/V111VVavXp0jjjgi/fr1y2WXXZYk6devX958881MmTIlSTJ58uSMGDEiL7zwQtq1a5fBgwfXfs59+vTJbrvtVrvl7p133pnq6uqsWLEirVu3zqhRo9KrV68kSc+ePdOiRYtUV1cnSX74wx/mvvvuy9NPP52WLVumuro6p59+epKkW7duadOmTW699dYk7577OW/evCxZsiR77rln7r333px22mnZsmVLTjrppHTo0CEjR45Mktx4441ZtGhRHn/88TRu3DgzZ85Mjx498tZbb+X444/PsccemxtuuCFJMmTIkCxfvjyPPPJI6tevn7lz5+a8887LG2+8kfLy8px66qm1/9PC97///bz44ou1WwE/+OCDqayszNq1a3PkkUfm3HPPTf/+/ZMklZWVWbduXWbMmJEk5ghzhDnCHGGOMEeYI8wR5ghzhDki5ghzhDnCHGGOMEeYI8wR5ohddY74UkrjlltuKdkccWCJxpQkc+fOTfLh54gGDT5SbFer3tatW7fW5Yannnoq3/zmNzN06NDtzunr06dP7r333jz11FP5+te/niSZPn16evXqlSFDhmTEiBE7vNeQIUMyatSozJkzJ926dcuaNWuy3377pby8PE8++eQO9QsXLkxFRUX69+9f+x+XQw45JCtXrszmzZt3+DA2b96chg0b5vDDD8+zzz670/Fs2rQpmzZtqv19TU1NWrVqlfXr19eGhgAAAAAAAP9ofr2TRVOfhMOqqkrSJ0mG1atXsl5VdYvgUlNTk7Kyso+cUdUpMnznnXdy3nnn5fDDD69N9/+Wbavv3m+l3batNLfV1bX+vfe0aNHiA+vfq1GjRmnUqNHfHggAAAAAAAB8htUp9NuwYUPt+XgNGzbcac03vvGNJO8u7f3yl7+c5P3P1HvveXxNmjRJy5Yt89JLL+Uvf/nLDluH7uz8vrZt2+bpp5/OypUrdwj9PuhMQQAAAAAAANgV1Cn0a9SoUS688MKd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woULa/ucffbZOemkk1JZWZn58+fX1r/xxhu5/PLLs9dee2XZsmXZf//9kySDBw9Ohw4dcumll6ZLly5p1qxZXYcKAAAAAAAAhVDnlX7169ffIfBLkgYNGqRbt25JkhdeeCFJsnXr1kycODFNmzbN9ddfv1399ddfn6ZNm2bixInbXb/77ruTJMOHD9+uz3e+850ce+yxWbBgQV555ZXa6w888ED++Mc/5vLLL68N/JJk//33T2VlZf7whz/koYcequswAQAAAAAAoDDqHPq9ny1btuSnP/1pkqR9+/ZJkpUrV2bNmjUpLy9PkyZNtqtv0qRJysvLs2rVqqxevbr2+qJFi2pfe68uXbokSRYvXrxdfZJUVFR8qHoAAAAAAADY1dR5e89t3n777YwaNSpbt27NunXr8thjj+U///M/c/755+db3/pWktSev9e2bdudvkfbtm0zf/78rFy5Mq1atcrGjRuzdu3atG/fPp/73Od2Wv/X7/tBPXZW/16bNm3Kpk2ban9fU1PzN8cNAAAAAAAAnzUfK/QbNmxY7e/r1auX73//+7nppptqr61fvz5JUlZWttP3aN68+XZ1da3/oHt2Vv9eN91003bj2KZHjx7ZbbfdMm3atFx77bV5+eWX0759+1RWVuaSSy5JkvTt2zebN2/O5MmTkyQ/+tGPMmbMmDz//PP54he/mOuuuy59+vRJkvTu3Tt77LFHJkyYkCS54447MmHChDz77LNp1apVbrnllpx11llJku7du6dly5a5/fbbkyTjxo3LjBkzsnTp0uyzzz6ZMGFC7Vaqp556atq1a5ebb745STJ69Oj85Cc/yc9+9rM0b948U6dOzXe/+92888476dKlSzp16pThw4cnSYYOHZolS5Zk4cKFadSoUR544IGcffbZ2bBhQzp37pyKiooMGTIkybtnMK5YsSI//vGPkyQPP/xwzj///Kxbty7f+MY3csYZZ+TKK69MkgwcODCvvPJKZs+enSSZNWtWBgwYkNdeey0dOnTIhRdemMrKyiTJZZddlvXr12fatGlJkilTpqSqqiqrVq3KoYcemoEDB6Zv375JkgsuuKD2c07e3Qp27Nixee6553LwwQdn2LBh6d27d5KkV69eKSsryx133JEkqa6uzj333JPly5dnv/32y7hx49K9e/ckyRlnnJEDDjggY8eOTZLcdtttmT17dp566qm0aNEikyZNyimnnJIkOfnkk9O+ffva8ylHjhyZBQsWZPHixWnatGmmT5+eM888M5s2bcoJJ5yQ8vLyDB06NMm7W9ouXbo08+fPT4MGDTJnzpycc845qampydFHH52uXbvm6quvTpIMGjQozz//fObNm5ckeeihh9KvX7+8/vrr6dSpU3r27JkBAwYkSb73ve9l7dq1mTVrVpLk/vvvz1VXXZXVq1fniCOOSL9+/XLZZZclSfr165c333wzU6ZMSZJMnjw5I0aMyAsvvJB27dpl8ODBtZ9znz59sttuu9VuuXvnnXemuro6K1asSOvWrTNq1Kj06tUrSdKzZ8+0aNEi1dXVSZIf/vCHue+++/L000+nZcuWqa6uzumnn54k6datW9q0aZNbb701ybvnfs6bNy9LlizJnnvumXvvvTennXZatmzZkpNOOikdOnTIyJEjkyQ33nhjFi1alMcffzyNGzfOzJkz06NHj7z11ls5/vjjc+yxx+aGG25IkgwZMiTLly/PI488kvr162fu3Lk577zz8sYbb6S8vDynnnpqBg0alCT5/ve/nxdffLF2K+AHH3wwlZWVWbt2bY488sice+656d+/f5KksrIy69aty4wZM5LEHGGOMEeYI8wR5ghzhDnCHGGOMEfEHGGOMEeYI8wR5ghzxCc5Rzx8wtdSSqWYI4Y0+sjRRJ1tm0s/6Tmie8lG9G7PUs0RXyrRmG655ZaSzREHlmhMSTJ37twkH36OaNDg4/3ZqLd169atH+cNtmzZkjVr1uT//t//m2uvvTZf+cpX8sgjj6R58+aZPn16evXqlSFDhmTEiBE73DtkyJCMGjUqc+bMSbdu3bJmzZrst99+KS8vz5NPPrlD/cKFC1NRUZH+/fvX/sflkEMOycqVK7N58+YdPozNmzenYcOGOfzww/Pss8/u9Pl3ttKvVatWWb9+fW1oCAAAAAAAn4rxOy5a+cRcXlWSNn8eUbox7X5daca0ZieLiz4p+1aVZkxJ8usSjeuwEo5pWL16JetVVccIrqamJmVlZR85o/rYZ/rVr18/+++/fy699NLcddddWbJkSW3CvW313futtNu2lea2urrWf9A9O6t/r0aNGqV58+bb/QIAAAAAAIAi+dih31+rqKhIkixatCjJB5+p997z+Jo0aZKWLVvmpZdeyl/+8pcPrP+g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We64444kSXV1de65554sX748++23X8aNG5fu3bsnSc4444wccMABGTt2bJLktttuy+zZs/PUU0+lRYsWmTRpUk455ZQkycknn5z27dvXnlE5cuTILFiwIIsXL07Tpk0zffr0nHnmmdm0aVNOOOGElJeXZ+jQoUne3dZ26dKlmT9/fho0aJA5c+bknHPOSU1NTY4++uh07do1V199dZJk0KBBef755zNv3rwkyUMPPZR+/frl9ddfT6dOndKzZ88MGDAgSfK9730va9euzaxZs5Ik999/f6666qqsXr06RxxxRPr165fLLrssSdKvX7+8+eabmTJlSpJk8uTJGTFiRF544YW0a9cugwcPrv2c+/Tpk9122612290777wz1dXVWbFiRVq3bp1Ro0alV69eSZKePXumRYsWqa6uTpL88Ic/zH333Zenn346LVu2THV1dU4//fQkSbdu3dKmTZvceuutSd49+3PevHlZsmRJ9txzz9x777057bTTsmXLlpx00knp0KFDRo4cmSS58cYbs2jRojz++ONp3LhxZs6cmR49euStt97K8ccfn2OPPTY33HBDkmTIkCFZvnx5HnnkkdSvXz9z587NeeedlzfeeCPl5eU59dRTM2jQoCTJ97///bz44ou12wE/+OCDqayszNq1a3PkkUfm3HPPTf/+/ZMklZWVWbduXWbMmJEk5ghzhDnCHGGOMEeYI8wR5ghzhDki5ghzhDnCHGGOKOIc8fCFX0up/Md//EfJ5ohS2fbnsxRzxMMnlO5rlaQkc8SQRh87mvjQtn2tPuk5onvJRvRuz1J9H1Eqt9xyS8m+jziwZKNK5s6dm+TDzxHbdtP8qOpt3bp160e9ecuWLendu3emT5+evn375q677qp9bfr06enVq1eGDBmSESNG7HDvkCFDMmrUqMyZMyfdunXLmjVrst9++6W8vDxPPvnkDvULFy5MRUVF+vfvX/vN5yGHHJKVK1dm8+bNO3wQmzdvTsOGDXP44Yfn2Weffd8xbNq0KZs2bar9fU1NTVq1apX169fXBocAAAAAALuUeTsuhPjEnFpVul7frleaPv/vI/9Yve7Gl/BrdXlpvlZ/HlG6Me1+XWnGtGYni4s+KftWle7P1PR6pfkzdfZHj6rqbFiJxpQkVXUcV01NTcrKyj5yRvWRI8MtW7bkggsuyPTp03POOefk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dO7cORUVFRkyZEiS5Oqrr86KFSvy4x//OEny8MMP5/zzz8+6devyjW98I2eccUauvPLKJMnAgQPzyiuvZPbs2UmSWbNmZcCAAXnttdfSoUOHXHjhhbXnM1522WVZv359pk2bliSZMmVKqqqqsmrVqhx66KEZOHBg+vbtmyS54IILaj/n5N3tYMeOHZvnnnsuBx98cIYNG5bevXsnSXr16pWysrLccccdSZLq6urcc889Wb58efbbb7+MGzcu3bt3T5KcccYZOeCAAzJ27NgkyW233ZbZs2fnqaeeSosWLTJp0qSccsopSZKTTz457du3z+jRo5MkI0eOzIIFC7J48eI0bdo006dPz5lnnplNmzblhBNOSHl5eYYOHZrk3W1tly5dmvnz56dBgwaZM2dOzjnnnNTU1OToo49O165dc/XVVydJBg0alOeffz7z5s1Lkjz00EPp169fXn/99XTq1Ck9e/bMgAEDkiTf+973snbt2syaNStJcv/99+eqq67K6tWrc8QRR6Rfv3657LLLkiT9+vXLm2++mSlTpiRJJk+enBEjRuSFF15Iu3btMnjw4NrPuU+fPtltt91qt9298847U11dnRUrVqR169YZNWpUevXqlSTp2bNnWrRokerq6iTJD3/4w9x33315+umn07Jly1RXV+f0009PknTr1i1t2rTJrbfemuTdsz/nzZuXJUuWZM8998y9996b0047LVu2bMlJJ52UDh06ZOTIkUmSG2+8MYsWLcrjjz+exo0bZ+bMmenRo0feeuutHH/88Tn22GNzww03JEmGDBmS5cuX55FHHkn9+vUzd+7cnHfeeXnjjTdSXl6eU089NYMGDUqSfP/738+LL76Yhx56KEny4IMPprKyMmvXrs2RRx6Zc889N/3790+SVFZWZt26dZkxY0aSmCPMEeaIT3mOyNF/+3zhv5dJkyaVbI5oesUtJRlTktxzzz0lmSOOvH92ycZ0xRVXlGyOOP7hSSUZ0ymnnFKyOeLUh28vyZi2jSv55L+PyP9uXNIxler7iIqxp5dkTE8++WTJvo/4ysUHlGRMp5xySsm+jxjx8DklGVOS/Mu//EtJvo/IHiUbUk455ZSS/V1j0sPHl2RMmzdvLtnfNZr+U0mGlOTdr1Up/q7x8OSvlWxM//Vf/1WSv2uce3TJhpRTTjmlZH/XePjG0nytZsyY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s19in8oPFbFfYp/KBxWxTxxXMfsl9qn8UBH7JfapfFAR+8RxFbNfYp/KDxWxX2KfygcVsU8cVzH7JfapfFAR+8RxFbNfYp+0CwEAbTfiUzl16hTXrFkzzsDAgOvSpQtnamrK/fjjj9yjR4+4JUuWcGPGjNF2E0VEREREREREREREREREREREREREREREREREyowK4fTjOI67ePEiN2PGDO7PP//kCgoKuKCgIG706NFc586dtd00EREREREREREREREREREREREREREREREREZEypcI4/URERERERERERERERERERERERERERERERERE/quU+5p+IiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiL/dUSnn4iIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIhIOUd0+omIiIiIiIiIiIiIiIiIiIiIiIiIiOgEDx8+1HYTRERERMototNPRKf5559/xIVeRERERETkI8jNzdV2E0RE3pvCwkJtN0FERERERERERETLZGZmcnXq1OF69OjBJSQkaLs5IiIiIuUS0eknorP8/PPPXM2aNblvvvmGe/PmjbabI1KKFBUVabsJIiIiIhWaZcuWcUOHDuXS0tK03RQRkXcyd+5cbseOHVx+fr62myIiIiIiIqIxCgoKtN0EERGdIzs7m3NxceGSkpK4vLw8bTdHREREpFwiOv1EdAoA7L9dXFy48PBwztTUlDM0NNRiq0RKE4VCwUmlUo7jOO7vv//WeYO0QqHQdhNEtIh4/0U+Ff66piny8/O5devWcZs2beIuXryo8d/XFejzq417IPL+XL58mZs+fToXExPDPX/+XNvNKVdoK4hKzMr87yLOpyIipcf9+/c5FxcXLiYmRttNERHRKezs7LglS5ZwJ06c4Pz8/LisrCwxcLycIO4TREoT8czxaYhOPxGdIiUlhf13SEgIt3v3bm7mzJmcRCIRZT4rCBJJ8bTTq1cvrk6dOtypU6d0diIvKipi7S3PiBuvjwMAJ5FIdHZ8KlOeHJTlqa2fgkKh4AghGv9dPT097uDBg9yaNWu4qKgojf++rkDnb7q3+K+Mu/KGv78/t3XrVm769Omcu7u7tptTrqBBVImJiRzHaW6My2QyLikpibt+/TrHceI+478EXdPKy94IQInPhThuyy8V5d69ePGCMzEx4ebPn8+dOXNG2835IPgO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\n"
          },
          "metadata": {}
        }
      ]
    },
    {
      "cell_type": "code",
      "source": [
        "print(len(colors))"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "Jifq9uaXCxZc",
        "outputId": "ae567ef2-a4a4-4dcb-caf9-e5628ca043e4"
      },
      "execution_count": null,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "32\n"
          ]
        }
      ]
    },
    {
      "cell_type": "code",
      "source": [
        "print(colors[0:3])"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "9r9P_2v2CzCa",
        "outputId": "5a4e2932-daf1-4446-ba03-5842fcccd3f5"
      },
      "execution_count": null,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "[[0.         0.         0.5        1.        ]\n",
            " [0.         0.         0.64662757 1.        ]\n",
            " [0.         0.         0.79325513 1.        ]]\n"
          ]
        }
      ]
    },
    {
      "cell_type": "markdown",
      "source": [],
      "metadata": {
        "id": "B_87C5jKyO73"
      }
    },
    {
      "cell_type": "code",
      "source": [
        "!unzip /content/head.zip -d /content/head"
      ],
      "metadata": {
        "id": "VoEqrYLp5Uxs",
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "outputId": "950132b8-a4c7-4c0a-c7fa-1898f586652f"
      },
      "execution_count": null,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "Archive:  /content/head.zip\n",
            "  inflating: /content/head/ayaka.jpg  \n",
            "  inflating: /content/head/baizhantang.jpg  \n",
            "  inflating: /content/head/duanyu.jpg  \n",
            "  inflating: /content/head/Dumbledore.jpg  \n",
            "  inflating: /content/head/guofurong.jpg  \n",
            "  inflating: /content/head/Harry.jpg  \n",
            "  inflating: /content/head/haruhi.jpg  \n",
            "  inflating: /content/head/Hermione.jpg  \n",
            "  inflating: /content/head/hutao.jpg  \n",
            "  inflating: /content/head/jiumozhi.jpg  \n",
            "  inflating: /content/head/liyunlong.jpg  \n",
            "  inflating: /content/head/Luna.jpg  \n",
            "  inflating: /content/head/Malfoy.jpg  \n",
            "  inflating: /content/head/McGonagall.jpg  \n",
            "  inflating: /content/head/murongfu.jpg  \n",
            "  inflating: /content/head/Penny.jpg  \n",
            "  inflating: /content/head/qiaofeng.jpg  \n",
            "  inflating: /content/head/raidenShogun.jpg  \n",
            "  inflating: /content/head/Raj.jpg   \n",
            "  inflating: /content/head/Sheldon.jpg  \n",
            "  inflating: /content/head/Snape.jpg  \n",
            "  inflating: /content/head/tangshiye.jpg  \n",
            "  inflating: /content/head/tongxinagyu.jpg  \n",
            "  inflating: /content/head/wanderer.jpg  \n",
            "  inflating: /content/head/wangduoyu.jpg  \n",
            "  inflating: /content/head/wangyuyan.jpg  \n",
            "  inflating: /content/head/weixiaobao.jpg  \n",
            "  inflating: /content/head/xiaofeng.jpg  \n",
            "  inflating: /content/head/xuzhu.jpg  \n",
            "  inflating: /content/head/yaemiko.jpg  \n",
            "  inflating: /content/head/yuqian.jpg  \n",
            "  inflating: /content/head/zhongli.jpg  \n"
          ]
        }
      ]
    },
    {
      "cell_type": "code",
      "source": [
        "!mv /content/head/tongxinagyu.jpg /content/head/tongxiangyu.jpg"
      ],
      "metadata": {
        "id": "ctDCPUVaCVuz"
      },
      "execution_count": null,
      "outputs": []
    },
    {
      "cell_type": "markdown",
      "source": [
        "/content/head 目录下有很多.jpg的文件\n",
        "\n",
        "folder_names 是一个 list of string\n",
        "\n",
        "我希望建立一个python的字典role2img_name\n",
        "\n",
        "对于每一个folder_name，记录在目录下对应的jpg的文件名\n",
        "\n",
        "注意，文件名有时可能把folder_name的首字母变为了小写\n",
        "\n",
        "请用python为我实现"
      ],
      "metadata": {
        "id": "6N4r3XV1BUTi"
      }
    },
    {
      "cell_type": "code",
      "source": [
        "import os\n",
        "\n",
        "role2img_name = {}\n",
        "\n",
        "for folder_name in folder_names:\n",
        "    img_name = None\n",
        "    for f in os.listdir(os.path.join('/content/head')):\n",
        "        if f.endswith('.jpg') and f.startswith( folder_name ):\n",
        "            img_name = f\n",
        "            break\n",
        "\n",
        "    if img_name is not None:\n",
        "        role2img_name[folder_name] = os.path.join('/content/head',img_name)\n",
        "    else:\n",
        "        print('unfound ', folder_name)\n",
        "\n"
      ],
      "metadata": {
        "id": "66CuYEdLBOQp"
      },
      "execution_count": null,
      "outputs": []
    },
    {
      "cell_type": "code",
      "source": [
        "print(role2img_name['tangshiye'])"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "ENLOOCDLCBGa",
        "outputId": "7004a6ec-18b8-4670-d78c-1e24a7b05f5d"
      },
      "execution_count": null,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "/content/head/tangshiye.jpg\n"
          ]
        }
      ]
    },
    {
      "cell_type": "markdown",
      "source": [
        "names是一个长度为30的 list of string\n",
        "\n",
        "'tangshiye', 'murongfu', 'liyunlong', 'Luna', ...\n",
        "\n",
        "role2img_name[ name ] 可以获取每个name对应的文件名\n",
        "\n",
        "如: /content/head/tangshiye.jpg\n",
        "\n",
        "colors 是一个list, 长度也是30，每个元素是一个rgba的四元数，如\n",
        "\n",
        "[0.         0.         0.5        1.        ]\n",
        " [0.         0.         0.64662757 1.        ]\n",
        " [0.         0.         0.79325513 1.        ]\n",
        " ...\n",
        "\n",
        "\n",
        "我希望，依次读取role2img_name[ name ] 的图片\n",
        "\n",
        "resize成300*300\n",
        "\n",
        "并且将边缘的20个像素，修改为 colors[i] 对应的颜色\n",
        "\n",
        "然后拼接成一张高度为300\n",
        "\n",
        "宽为300*30的图片\n",
        "\n",
        "请用python为我实现"
      ],
      "metadata": {
        "id": "boev3iJdC6at"
      }
    },
    {
      "cell_type": "code",
      "source": [
        "names = folder_names\n",
        "print(names[:4])"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "AnAUpYkGCJAq",
        "outputId": "865a04d0-22f3-41db-e700-344875beca13"
      },
      "execution_count": null,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "['tangshiye', 'murongfu', 'liyunlong', 'Luna']\n"
          ]
        }
      ]
    },
    {
      "cell_type": "code",
      "source": [
        "import cv2\n",
        "import numpy as np\n",
        "import os\n",
        "\n",
        "img_list = []\n",
        "\n",
        "names = sorted_folder_names\n",
        "\n",
        "pad_size = 60\n",
        "\n",
        "for i, name in enumerate(names):\n",
        "\n",
        "    if i%2!=0:\n",
        "        continue\n",
        "\n",
        "    img_path = os.path.join('/content/head', role2img_name[name])\n",
        "    img = cv2.imread(img_path)\n",
        "\n",
        "    # 缩放图片\n",
        "    img = cv2.resize(img, (300, 300))\n",
        "\n",
        "    # 生成边框颜色\n",
        "    color = colors[31-i][:3] * 255\n",
        "    frame = np.full((300, 20, 3), color, dtype=np.uint8)\n",
        "    frame_h = np.full((20,300, 3), color, dtype=np.uint8)\n",
        "\n",
        "    # 插入边框\n",
        "    img[:, :20] = frame\n",
        "    img[:, -20:] = frame\n",
        "    img[:20, :] = frame_h\n",
        "    img[-20:, :] = frame_h\n",
        "\n",
        "    img_list.append(img)\n",
        "\n",
        "    pad_img = np.full((300,pad_size,3),[255,255,255],dtype=np.uint8)\n",
        "    img_list.append(pad_img)\n",
        "\n",
        "# 拼接图片\n",
        "final_img = np.concatenate(img_list, axis=1)\n",
        "\n",
        "# 保存结果\n",
        "cv2.imwrite('/content/output_0.jpg', final_img)"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "Wq4PSb4WC9SU",
        "outputId": "e776b43d-51e1-48be-df85-4d2b2173d3d7"
      },
      "execution_count": null,
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "True"
            ]
          },
          "metadata": {},
          "execution_count": 22
        }
      ]
    },
    {
      "cell_type": "code",
      "source": [],
      "metadata": {
        "id": "neNY3eXcD6Dp"
      },
      "execution_count": null,
      "outputs": []
    }
  ]
}